package br.com.funaction.eventtcontrollerv2.model;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.com.funaction.eventtcontrollerv2.util.ConexaoUtil;

public class VisaoGeralDAO implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private final String SELECT_ANUNCIO = "SELECT SUM(VALOR) AS TOTAL " +
			"FROM ANUNCIO INNER JOIN ANUNCIANTE " +
			"ON ANUNCIO.ID_ANUNCIANTE = ANUNCIANTE.ID " +
			"WHERE ANUNCIANTE.DATA_TERMINO_CONTRATO >= ? " +
			"AND ANUNCIANTE.ID_FRANQUIA = ?";
	
	private final String SELECT_PAGAMENTO = "SELECT SUM(VALOR) AS TOTAL " + 
			"FROM remuneracao INNER JOIN pdv " + 
			"ON remuneracao.ID_PDV = pdv.ID_PDV " + 
			"WHERE pdv.DATA_TERMINO_CONTRATO >= ? " + 
			"AND pdv.ID_FRANQUIA = ? " + 
			"AND pdv.COND_REMUN <> 3;";
	
	private final String SELECT_ESPACO_ALOCADO = "SELECT SUM(QTD_ANUNCIO_ALOCADO) AS TOTAL, " + 
			"COUNT(ID_PDV) AS CONTAGEM " +
			"FROM pdv WHERE pdv.DATA_TERMINO_CONTRATO >= ? " +
			"AND pdv.ID_FRANQUIA = ?;";
	
	Connection con = null;
	PreparedStatement prepStmt = null;
	ResultSet rs = null;
	
	public int totalAnuncioMes(String dataInicial, String dataFinal, int idFranquia) throws SQLException{
		
		con = ConexaoUtil.getConexao();
		prepStmt = con.prepareStatement(SELECT_ANUNCIO);
		prepStmt.setString(1, dataInicial);
		prepStmt.setInt(2, idFranquia);
		rs = prepStmt.executeQuery();
		
		int resultadoBusca = 0;
		
		while(rs.next()){
			
			resultadoBusca = rs.getInt("TOTAL");
		}
		
		return resultadoBusca;
	}
	
	public int totalPagamentoMes(String dataInicial, String dataFinal, int idFranquia) throws SQLException{
		
		con = ConexaoUtil.getConexao();
		prepStmt = con.prepareStatement(SELECT_PAGAMENTO);
		prepStmt.setString(1, dataInicial);
		prepStmt.setInt(2, idFranquia);
		rs = prepStmt.executeQuery();
		
		int resultadoBusca = 0;
		
		while(rs.next()){
			
			resultadoBusca = rs.getInt("TOTAL");
		}
		
		return resultadoBusca;
	}
	
	public int totalEspacoAlocado(String dataInicial, String dataFinal, int idFranquia) throws SQLException{
		
		con = ConexaoUtil.getConexao();
		prepStmt = con.prepareStatement(SELECT_ESPACO_ALOCADO);
		prepStmt.setString(1, dataInicial);
		prepStmt.setInt(2, idFranquia);
		rs = prepStmt.executeQuery();
		
		int resultadoBusca = 0;
		
		while(rs.next()){
			
			resultadoBusca = rs.getInt("TOTAL");
		}
		
		return resultadoBusca;
	}
	
	public int totalEspacoDisponivel(String dataInicial, String dataFinal, int idFranquia) throws SQLException{
		
		con = ConexaoUtil.getConexao();
		prepStmt = con.prepareStatement(SELECT_ESPACO_ALOCADO);
		prepStmt.setString(1, dataInicial);
		prepStmt.setInt(2, idFranquia);
		rs = prepStmt.executeQuery();
		
		int resultadoBusca = 0;
		
		while(rs.next()){
			
			resultadoBusca = rs.getInt("CONTAGEM");
		}
		
		return resultadoBusca;
	}
}